# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025/9/21 22:33
# @Author  : Dell
# @File    : text_check.py
# @Software: PyCharm
# @Desc    :检索器
# 使用阿里云DashScope向量模型的完整示例,支持：文本嵌入、相似度计算、语义搜索

from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter  # 这个可能还在原位置
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import DashScopeEmbeddings # 使用阿里云的向量模型

#-------------------准备工作开始#-------------------
# 加载文档
loader = TextLoader("xiyouji.txt",encoding="utf-8")
document = loader.load()
# 方法1：处理单个文档内容
text_splitter=RecursiveCharacterTextSplitter(chunk_size=500,chunk_overlap=20)
texts = text_splitter.split_documents(document)
print(f"分割为 {len(texts)} 个文本块")

# 方法2：处理整个文档列表
# split_docs = text_splitter.split_documents(document)
# print(f"分割为 {len(split_docs)} 个文档")

# 词嵌入，将切割出来的文档转化成向量
# 阿里云提供的向量模型：
# text-embedding-v1 - 通用文本向量模型
# text-embedding-v2 - 升级版文本向量模型
# multimodal-embedding-v1 - 多模态向量模型

embeddings = DashScopeEmbeddings(model='text-embedding-v1',dashscope_api_key="sk-7b4f290b1a3e42a1a9a1957fa44eff37")
# 嵌入文本，将向量存到数据库,将文本数据转换为向量并构建成一个可快速进行相似性搜索的索引数据库
db=FAISS.from_documents(texts,embeddings)
#-------------------检索准备工作结束#-------------------

# 初始化检索器。仅请求返回1个文档
retriever=(db.as_retriever())
docs = retriever.invoke("西游记孙悟空是怎么诞生的？")
print(docs)